# Configuration file for MegaZeux
# Dec 30th, 2009

# Comments begin with #. Whitespace is ignored. Empty lines are
# ignored as well.
# Options are set in the following format:
# option = value
# If value is not given, then it is assumed to be 1.
# You can include spaces in values by escaping them with \s.
# (see the default macros for examples)
# For directories, use forward slashes (/) instead of back-slashes,
# as they work more reliably.
# Note that even if the option is given to change the values
# in MZX, this text file will NOT be modified, and hence the
# values will revert to what they are here when you restart MZX.

# NOTE: All of the options below have sane defaults. Changes to
# these options will only take effect if you uncomment them.

# In many cases, the current default value has been written in,
# but this is not guaranteed (for example with video_output).

### Video options ###

# Rendering engine to use to display MegaZeux. The fastest renderer
# is "software", due to the way MegaZeux is drawn internally. However,
# due to MegaZeux's strange default resolution (640x350), many video
# cards have difficulty with supporting it correctly in fullscreen mode.
#
# Using another renderer that supports scaling will be slower, but not
# necessarily by much, depending on your video hardware and CPU. Very
# often, MZX uses so little CPU during software rendering that scaling
# is an inexpensive feature.
#
# The software renderer is the default renderer and has very good
# windowed and non-windowed performance. In addition, this renderer
# correctly supports 8 bit colour modes, should you be using antiquated
# hardware. It also requires no overlay or 3D hardware support. If you're
# on a slow computer or a handheld portable, you definitely want to use
# this. To use it, either do nothing, or uncomment the line below.

# video_output = software

# The YUV overlay renderer is a good substitute if you want scaling
# at low cost. The quality of the scaling is poor, and can sometimes be
# very poor depending on your video hardware. On video hardware that
# interpolates or filters the YUV overlay, such as NVIDIA or ATI hardware,
# this method can be fairly high quality (comparable to GL with linear
# filtering), and yields good performance, with low OS driver requirements.
# On Intel Integrated video, and other similar solutions, the YUV overlay
# will use nearest neighbour and the quality will be atrocious.
#
# Uncomment either of the lines below (but not both) if you want to try it.
# The "overlay2" mode is cheaper, but will be less accurate due to the use
# of chroma subsampling instead of a full YUV encode.

# video_output = overlay1
# video_output = overlay2

# An OpenGL renderer is a good choice if you want a highly configurable,
# cheap (in terms of CPU cycles) renderer and have a fairly good video
# card. This method provides the highest quality scaler and should work
# on all platforms with OpenGL or OpenGL ES support.
#
# MegaZeux provides two fixed-function scalers. The first, by Exophase,
# renders the whole game to a texture and uses OpenGL to stretch it.
# This renderer is called "opengl1" and is high quality but quite slow.
#
# The second fixed-function scaler was written by Logicow, and it uses the
# features of GL more extensively, remapping the character sets to a texture,
# tiling entirely in OpenGL. This yields a performance increase, at the cost
# of some compatibility. This renderer is called "opengl2".
#
# MegaZeux also provides a scaler for programmable hardware. If you have
# OpenGL 2.0 or OpenGL ES 2.0 capable hardware, you should use this renderer.
# Written by Logicow, it uses shaders to do the tiling and scaling. There
# are four shader programs that can be customized. This renderer is called
# "glsl". It is the highest quality and best performing renderer.
#
# Uncomment ONE of the lines below:

# video_output = opengl1
# video_output = opengl2
# video_output = glsl

# The OpenGL and YUV overlay renderers can be configured to preserve aspect
# ratio where possible, in window and fullscreen modes. The supported
# ratios are "classic" (4:3) and "modern" (64:35). The ratio type "stretch"
# disables any aspect ratio preservation, and is the default.

# video_ratio = stretch

# OpenGL will, by default, linearly interpolate pixels as it upscales
# to your requested resolution. This creates an output with more "blur",
# which some people dislike. If you are using a sufficiently high target
# resolution, preferably an integer multiple of 640x350, you may find
# "nearest" more pleasing, which will have no "blur". The default
# setting is "linear".

# gl_filter_method = nearest

# Some OpenGL driver settings may default vertical sync on, which looks
# visually better (especially on CRTs) but can cause "speed 1" to run
# noticably slower than with other renderers. For consistency with other
# renderers, and for correctness, MegaZeux will attempt to disable vsync
# when gl_vsync is the default value of 0. Conversely, a value >= 1 forces
# MegaZeux to override the driver settings and enable vsync, which
# decreases tearing. A value < 0 can be used to tell MegaZeux to obey the
# driver default, which is unlikely to be useful.

# gl_vsync = 1

# Resolution MZX uses for fullscreen. With the software renderer, this
# will center MZX on the screen, and will not scale it.
# However, with the hardware renderers above, MZX will attempt to scale
# itself to match this resolution. Best results are obtained with
# multiples of 640x350, but any supported screen mode should work.
# Give in x,y format. Use this if the defaults are giving you problems,
# especially in the software renderer.
# This resolution may not actually work; if it doesn't, you will
# get the nearest that does.

# fullscreen_resolution = 640,480

# The resolution MZX uses in a window. If you renderer supports
# it, MZX will be scaled to fit this specification. Otherwise
# the setting is ignored.

# window_resolution = 640,350

# Use this to toggle whether MZX can be scaled while in window
# mode, if your renderer supports it. If you use a renderer which
# supports scaling, but don't want to accidentally scale it (which
# may distort the image), you can switch this off here.

# enable_resizing = 1

# MZX is limited internally to 8bit colour, but it can upmix its
# rendering to 32bit if your video card has difficulty with 8bit
# resolutions. Using 32bit colour is slower, but not by much.
# NOTE: This option may be ignored by one or more of the above
# renderers, but it is guaranteed to apply to "software". Valid
# settings are usually '8' or '32'.

# force_bpp = 32

# Whether MZX should start up in fullscreen or not.
# Press ctrl-alt-enter to toggle fullscreen as MZX runs.

# fullscreen = 1

### Audio options ###

# Sampling rate to output audio at. Higher values will sound
# better but use more resources and may not be supported by
# your audio card/drivers. Typical values include 22050, 44100,
# and 48000. If your card supports it you might get away with
# 96000, or even 192000.

# audio_sample_rate = 44100

# Audio buffer size. Setting this to lower can improve latency,
# so audio will be heard sooner after it is set to be changed.
# It is also possible to change PC speaker effects more rapidly
# with lower values. Lower buffer sizes need more CPU power to
# process. 2048 is adequete for PC speaker playback every
# command at speed 4.

# audio_buffer = 4096

# Allow music to be sampled at higher precision. Increases CPU
# usage but increases audio quality as well.

# enable_oversampling = 0

# Set master resample mode. This affects how OGGs and
# frequency shifted modules sound. Choices are:
# none (fastest, poor quality)
# linear (fast, good quality)
# cubic (slow, great quality)

# resample_mode = linear

# Set resample mode for modplug. This affects how modules
# and WAVs sound. Choices are:
# none (fastest, poor quality)
# linear (fast, good quality)
# cubic (slow, great quality)
# fir (very slow, excellent quality)

# modplug_resample_mode = linear

# Whether music/samples should be played or not.
# Does not include PC speaker effects.

# music_on = 1

# Whether PC speaker effects should be played or not.

# pc_speaker_on = 1

# Volume music plays at

# music_volume = 8

# Volume samples play at

# sample_volume = 8

# Volume PC speaker SFX play at

# pc_speaker_volume = 8


### Game options ###

# Name of world file that should be loaded when MZX starts.

# startup_file = caverns.mzx

# Default save file name given when you first try to save.

# save_file = saved.sav

# Speed MZX should start at (1 through 9)

# mzx_speed = 4

# Start in the editor by default

# startup_editor = 1


### Board editor options ###

# Whether or not the spacebar can be used to toggle between
# your active buffer and the meta character "SPACE". If you
# set this, it will behave like older MegaZeux's, but it will
# allow you to overwrite robots, for instance.
#
# If the setting is disabled (the default), replacing params
# will your new buffer will not require a toggle, and robots
# can only be deleted with the Delete key.

# editor_space_toggles = 1

# If this is set to 1 (the default), enter can be used to split
# a line in the robot editor. However, the classic behaviour is
# that enter moves the cursor down a line. If you would like to
# restore the old behaviour, please set this to 0.

# editor_enter_splits = 1

# Set to 1 if you want the board editor to not show the hotkey
# help by default.

# board_editor_hide_help = 1


### Robot editor options ###

# Enable or disable color coding in the editor.
# If color coding is off, ccode_string is used for the entire
# line.

# color_coding_on = 0

# Color codes for various types.
# For colors, use 255 to show a color box.

# ccode_colors = 255
# ccode_commands = 15
# ccode_conditions = 15
# ccode_current_line = 11
# ccode_directions = 3
# ccode_equalities = 0
# ccode_extras = 7
# ccode_immediates = 10
# ccode_items = 11
# ccode_params = 2
# ccode_strings = 14
# ccode_things = 11

# Whether or not "extra words" should be displayed.
# For instance, if turned on, a line like "wait 1" will
# become "wait for 1."

# disassemble_extras = 0

# The base numbers should be displayed as. Valid options
# are 10 and 16 (decimal and hexidecimal). Hex numbers are
# prefixed with a dollar sign ($).

# disassemble_base = 16

# Changing this will allow invalid comments to automatically
# be marked to "delete" or "comment" instead of "ignore".
# Don't change this unless you know what you're doing.

# default_invalid_status = ignore

# Single line macros
# These are the traditional MZX macros; they may only
# occupy one line in their definition in this file. They
# correspond to parameter-less macros: when you press
# F6 through F10 the following strings are printed to
# the editor, verbatim. For instance if you set macro_1 to
# * "hello", * "hello" will be inserted every time you
# press F6 in the robot editor.
# The following are the default singe-line macros.

# macro_1 = char\s
# macro_2 = color\s
# macro_3 = goto\s
# macro_4 = send\s
# macro_5 = :\splayershot^

# Extended macros:
# See macro.txt.

# The following is an example extended macro.
# It sets up a sprite. If you find it useful, remove the #'s.

#macro_sprite = Sprite\sSetup
# (number255 spr_num)
# (number255 w, h, rx, ry)
# (number255 cx, cy, cw, ch)
# (number255 x, y)
# set spr!spr_num!_width !w!
# set spr!spr_num!_height !h!
# set spr!spr_num!_refx !rx!
# set spr!spr_num!_refy !ry!
# set spr!spr_num!_cwidth !cw!
# set spr!spr_num!_cheight !ch!
# set spr!spr_num!_cx !cx!
# set spr!spr_num!_cy !cy!
# put !x1! sprite p!#spr_num! !x! !y!

# Whether or not the palette should be reverted to default
# when the robot editor is load. If set, SMZX mode 0 will
# also be enforced.

# robot_editor_default_palette = 0

# Set to 1 if you want the robot editor to not show the hotkey
# help and horizontal border by default.

# robot_editor_hide_help = 0

# Backup options

# Backups are save files made in the editor. They will only be made
# while in the main editor, not while in a sub-editor or a dialogue
# box of sorts. Note that this can cause slight pauses while editing,
# as the game saves.
# If you have multiple backups you should check the modified date in
# a console or file properties to determine which was most recently
# modified. The number will not indicate most recently saved.

# How many backups to be made. Set to zero to disable backups.

# backup_count = 3

# How often (in seconds) backups should be made

# backup_interval = 60

# The name of the backup file. If you choose "backup" with 3 backups
# the backups will be named backup1.mzx, backup2.mzx, and backup3.mzx.

# backup_name = backup

# The extension of backup files (keep this .mzx if you want to be able
# to easily load them)

# backup_ext = .mzx


# Joystick options

# It is possible to emulate key presses using a joystick. If this file
# is config.txt these options will apply as a default to all games -
# you can put them in game.cnf to apply specifically to game.mzx.

# A joystick is first specified as joyN where N is the number from
# 1 onwards identifying the joystick in your system. You may have
# to experiment to find which joystick is which number, if you have
# multiple ones, otherwise just use 1. Up to 16 joysticks are
# recognized.
# You can currently map two things, axes and buttons.
# Axes/buttons are mapped to keys given by number. You can find out
# a key's number by printing key_pressed in a loop (NOT key_code).
# Axis mapping looks as follows:

# joyXaxisY = A, B

# Where X is the number of the joystick, Y is the number of the axis
# (1 is typically left/right, 2 is typically up/down), A is the key
# for one extreme (such as left) and B is the key for the other
# (such as right).

# Button mapping looks as follows:

# joyXbuttonY = A

# Where X is the number of the joystick, Y is the number of the button
# (you may have to experiment to find out which button is which number),
# and A is the key whose press is emulated when this button is pressed.


# Misc Options

# Set to 1 if you want MZX to pause when key focus is lost. Useful for
# when another app (such as someone IM'ing you) steals the screen. This
# might cause MZX to lock up sometimes on some machines - if you have
# problems with it don't enable it.

# pause_on_unfocus = 0

# Set to 0 if you want input boxes and strings in the robot editor
# to use the game set for characters 32-127, as opposed to the protected
# GUI set.

# mask_midchars = 1

# Set to 1 if you would rather MZX's mouse pointer used the
# system mouse cursor.

# system_mouse = 0

###################
# NETWORK OPTIONS #
###################

# If networking is enabled, MZX is permitted to bind ports and connect
# out to the network or Internet. This option is a global kill switch
# for the paranoid and allows the entire network layer to be disabled.

# network_enabled = 1

# MegaZeux can support connections via a SOCKS4/5 proxy to punch through
# connections that would otherwise require some sort of pipe intermediary.

# socks_host = localhost
# socks_port = 1080

# The update host is an HTTP server containing all data and metadata
# associated with updates for MegaZeux. You normally won't want to
# change this, but it may be useful if you are a third party distributing
# unofficial updates. Please note, this is not a URL and should not
# contain protocol specifiers such as http://

# update_host = updates.digitalmzx.net

# The update "branch" is consulted each time the updater runs. Typically,
# there are only two branches, "Stable" and "Unstable". Please note, this
# option is case sensitive. The "Stable" branch is the default, but if
# you are interested in helping find bugs in the latest development
# version, or are instructed to follow development, you will need to
# change this to "Unstable". Third parties may use different branch names.

# update_branch_pin = Stable

include pad.config
